package com.ry.day1129;

import java.util.HashMap;
import java.util.Map;

public class LC158 {

    static class Solution {
        /**
         * @param s: The first string
         * @param t: The second string
         * @return: true or false
         */
        public boolean anagram(String s, String t) {
            if(s.length()!=t.length()) return false;
            Map<Character, Integer> map = new HashMap<>();
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (!map.containsKey(c)) {
                    map.put(c, 0);
                }

                map.put(c, map.get(c) + 1);
            }
            for (int i = 0; i < t.length(); i++) {
                char c = t.charAt(i);
                if (!map.containsKey(c)) return false;
                map.put(c, map.get(c) - 1);

                if (map.get(c) == -1) return false;
            }
            return true;
        }


    }

    public static void main(String[] args) {
        Solution obj = new Solution();

    }
}


/*
LintCode-Logo
搜索题目、标签、题集
中文
您上个月的个人报告已生成，点击查看
avatar
158 · 两个字符串是变位词
算法
简单
通过率
38%

题目
题解63
笔记
讨论99+
排名
记录
描述
写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。

最短时间刷“透”算法面试：《66页算法宝典》.pdf

微信添加【jiuzhangfeifei】备注【66】领取


什么是 Anagram?

在更改字符顺序后两个字符串可以相同
样例
样例 1:

输入: s = "ab", t = "ab"
输出: true
样例 2:

输入:  s = "abcd", t = "dcba"
输出: true
样例 3:

输入:  s = "ac", t = "ab"
输出: false
挑战
O(n) 的时间复杂度, O(1) 的额外空间

标签
企业
Amazon
相关题目

503
乱序字符串 (Map Reduce版本)
中等

772
错位词分组
中等

211
字符串置换
简单

171
乱序字符串
中等

647
子串字谜
中等

216
用isSubstring判断字符串的循环移动
简单

55
比较字符串
简单
推荐课程

Twitter 后端系统 - Python 项目实战
从0项目经验到深度后端项目操盘，FB架构师万行代码还原真实开发环境，14周简历镀金
157/3347
已开启智能提示
发起考试
15 分 00 秒
12345678910

控制台
        历史提交

 */
